package com.shujia.day04;

public class Code03Array {
    public static void main(String[] args) {
        /*
        数组静态初始化：
            数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
            数据类型[] 数组名 = {元素1,元素2,…};

        动态初始化：
            格式1：数据类型[] 数组名 = new 数据类型[m];
            格式2：数据类型 数组名[] = new 数据类型[m];

        两种初始化方式不同点：
            动态初始化，需要手动给定整个数组的长度，并且初始化时会给定默认值
            静态初始化, 需要手动给定整个数组的元素，并且会自动推断整个数组的长度

         */

        String[] students =  new String[] {"王紧", "周州", "赖成"};

        System.out.println(students); // [Ljava.lang.String;@4554617c  由于String是一个引用类型，所以在标识变量值时，会用[L引用类型的名称 做标记
        System.out.println(students[0]);
        System.out.println(students[1]);
        System.out.println(students[2]);

        int[] ints = new int[]{1, 2, 3};
        System.out.println(ints);  // [I@74a14482

        // 错误创建方式
//        int[] ints2 = new int[3]{1, 2, 3};

        // 简化
        int[] ints2 = {1, 2, 3};

        // 常见报错：
//        System.out.println(ints2[3]); // 3 不在下标范围内 会报错 java.lang.ArrayIndexOutOfBoundsException

        int[] ints3 = null;
//        System.out.println(ints3[0]); // java.lang.NullPointerException 空指针异常 在栈中变量的值为null 当获取变量对应下标值时，会去堆中找对应地址值，但不存在


    }
}
